package com.tianji.learning.config;

import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
import com.tianji.learning.utils.TableInfoContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 小海
 */
@Configuration
public class MybatisPlusConfiguration {

    @Bean
    public DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {
        // key:需要替换的表名;     value:替换表名的处理器
        Map<String, TableNameHandler> tableMap = new HashMap<>();

        // points_board:是需要替换的,如果使用MP操作的是points_board表,那么就会替换到新的表名
        tableMap.put("points_board", new TableNameHandler() {

            /*
             * sql:当前执行的sql
             * tableName:当前执行的表名
             * return:返回替换后的表名
             */
            @Override
            public String dynamicTableName(String sql, String tableName) {
                return TableInfoContext.getInfo();
            }
        });
        return new DynamicTableNameInnerInterceptor(tableMap);
    }
}
